perm filename PUZZLE[1,JMC] blob
sn#005253 filedate 1970-04-13 generic text, type T, neo UTF8
00100 COMMENT COMPUTE THE INDEX OF A POSITION;
00200
00300 BD←0;
00400 IF A[I1]≠A1 THEN GO TO AL1;
00450 BD←A1;
00500 IF B[I2]≠ B1 THEN GO TO AL2;
00550 BD ← BD LOR A1;
00600 IF B[I3] ≠ B2 THEN GO TO AL3;
00650 BD ← BD LOR B1;
00700 IF B[I4] ≠ B3 THEN GO TO AL4;
00750 BD ← BD LOR B2;
00800 IF B[I5] ≠ B4 THEN GO TO AL5;
00850 BD ← BD LOR B3;
00900 IF C[I6] ≠ C1 THEN GO TO AL6;
00950 BD ← BD LOR B4;
01000 IF D[I7] ≠ D1 THEN GO TO AL7;
01050 BD ← BD LOR C1;
01100 IF D[I8] ≠ D2 THEN GO TO AL8;
01150 BD ← BD LOR D1;
01200 IF D[I9] ≠ D3 THEN GO TO AL9;
01250 BD ← BD LOR D2;
01300 IF D[I10] ≠ D4 THEN GO TO A10;
01350 BD ← BD LOR D3;
01400 OUTSTR("THE POSITION SEEMS TO BE UNCHANGED. THIS
01500 SHOULD NOT BE. DO NOT PASS GO, DO NOT COLLECT $200.");
01600 GO TO ERROR;
01700
01800 AL1:
01900 FOR I1←1 STEP 1 WHILE A[I1]≠A1 DO;
02000 N1←I1; BD←A1;
02050 AL2:
02075 N2←1;
02100 FOR I2←1 STEP 1 WHILE B[I2]≠B1 DO
02200 IF B[I2] LAND BD = 0 THEN N2←N2+1;
02300 BD ← BD LOR B1;
02350 AL3:
02375 N3 ← 1;
02400 FOR I3←I2+1 STEP 1 WHILE B[I3]≠B2 DO
02500 IF B[I3] LAND BD = 0 THEN N3←N3+1;
02600 BD← BD LOR B2;
02650 AL4:
02675 N4 ← 1;
02700 FOR I4←I3+1 STEP 1 WHILE B[I4]≠B3 DO
02800 IF B[I4] LAND BD = 0 THEN N4←N4+1;
02900 BD← BD LOR B3;
02950 AL5:
02975 N5 ← 1;
03000 FOR I5←I4+1 STEP 1 WHILE B[I5]≠B4 DO
03100 IF B[I5] LAND BD =0 THEN N5←N5+1;
03200 BD← BD LOR B4;
03250 AL6:
03275 N6 ← 1;
03300 FOR I6←1 STEP 1 WHILE C[I6]≠C1 DO
03400 IF C[I6] LAND BD = 0 THEN N6←N6+1;
03500 BD←BD LOR C1;
03550 AL7:
03575 N7 ← 1;
03600 FOR I7←1 STEP 1 WHILE D[I7]≠D1 DO
03700 IF D[I7] LAND BD =0 THEN N7←N7+1;
03800 BD← BD LOR D1;
03850 AL8:
03875 N8←1;
03900 FOR I8←I7+1 STEP 1 WHILE D[I8]≠D2 DO
04000 IF D[I8] LAND BD = 0 THEN N8←N8+1;
04100 BD ← BD LOR D2;
04150 AL9:
04175 N9←1;
04200 FOR I9←I8+1 STEP 1 WHILE D[I9]≠D3 DO
04300 IF D[I9] LAND BD = 0 THEN N9←N9+1;
04400 BD ← BD LOR D3;
04450 AL10:
04475 N10←1;
04500 FOR I10←I9+1 STEP 1 WHILE D[I10]≠D4 DO
04600 IF D[I10] LAND BD = 0 THEN N10←N10+1;
04700
04800 N ← N7 +(N8-1)*(N8-2)%2 + (N9-1)*(N9-2)*(N9-3)%6
04900 + (N10-1)*(N10-2)*(N10-3)*(N10-4)%24 + 15*N6
05000 + 75*(N2 + (N3-1)*(N3-2)%2 + (N4-1)*(N4-2)*(N4-3)%6
05100 + (N5-1)*(N5-2)*(N5-3)*(N5-4)%24) + 37125*N1;
05200
05300 R ← N MOD 36; Q ← N%36;
05400 IF TBL[Q] LAND WD[R] = 0 THEN
05500 BEGIN TBL[Q]←TBL[Q] LOR WD[R];
05600 GO TO AA1 END;
05700
05800 COMMENT WE HAVE ALREADY SEEN THIS POSITION;